package com.cleaningcloud.erp.mapper;

import java.util.List;

import com.cleaningcloud.erp.domain.ErpReturnDetails;
import com.cleaningcloud.erp.domain.ErpSaleReturn;
import com.cleaningcloud.erp.domain.dto.ErpSaleReturnDto;
import com.cleaningcloud.erp.domain.vo.ErpProcudeReturnVo;
import com.cleaningcloud.erp.domain.vo.ErpSaleReturnVo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;

/**
 * 销售退换货Mapper接口
 * 
 * @author cleaningcloud
 * @date 2024-10-03
 */
public interface ErpSaleReturnMapper 
{
    /**
     * 查询销售退换货
     * 
     * @param saleReturnId 销售退换货主键
     * @return 销售退换货
     */
    ErpSaleReturnVo selectErpSaleReturnBySaleReturnId(Long saleReturnId);

    /**
     * 查询销售退换货列表
     * 
     * @param erpSaleReturn 销售退换货
     * @return 销售退换货集合
     */
    List<ErpSaleReturnVo> selectErpSaleReturnList(ErpSaleReturn erpSaleReturn);

    /**
     * 新增销售退换货
     * 
     * @param erpSaleReturn 销售退换货
     * @return 结果
     */
    int insertErpSaleReturn(ErpSaleReturn erpSaleReturn);

    /**
     * 修改销售退换货
     * 
     * @param erpSaleReturn 销售退换货
     * @return 结果
     */
    int updateErpSaleReturn(ErpSaleReturn erpSaleReturn);

    /**
     * 删除销售退换货
     * 
     * @param saleReturnId 销售退换货主键
     * @return 结果
     */
    int deleteErpSaleReturnBySaleReturnId(Long saleReturnId);

    /**
     * 批量删除销售退换货
     * 
     * @param saleReturnIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteErpSaleReturnBySaleReturnIds(Long[] saleReturnIds);

    /**
     * 根据销售退换单Id批量删除明细
     * @param orderId
     * @return
     */
    @Delete("delete from erp_return_details where order_id = #{orderId}")
    int deleteReturnDetailsByOrderId(@Param("orderId") Long orderId);



    /**
     * 查询采销售退换货
     *
     * @param saleReturnOdd 采购退换货编号
     * @return 采购退换货
     */
    ErpSaleReturnVo selectErpSaleReturnBySaleReturnOdd(@Param("saleReturnOdd") String saleReturnOdd);


}
